package com.tanhua.dubbo.mongo.api;


import com.sun.org.apache.bcel.internal.generic.NEW;
import com.tanhua.model.mongo.Questions;
import com.tanhua.model.mongo.TestSoul;
import com.tanhua.model.mongo.UserLevel;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@DubboService
public class TestSoulApiImpl  implements TestSoulApi{

    @Autowired
    private MongoTemplate mongoTemplate;

    @DubboReference
    private UserLevelApi userLevelApi;

    //查询所有问卷
    /*
     * 初级 --2星或2星以下
     * 中级  -- 4星 或4星以下
     * 高级 --5星或以上
     *
     * */
    public List<TestSoul> findAll( Long userId) {

        //获取用户等级
        Integer star = UpdateLevel(userId);

        //查询所有试卷
        List<TestSoul> list = mongoTemplate.find(new Query(), TestSoul.class);


        //根据用户等级返回值 与试卷星级做判断
        for (TestSoul testSoul : list) {
            if (testSoul.getStar()<=star){
                testSoul.setIsLock(0);
            }
        }

        return list;
    }

    //根据用户id查询等级解绑程度
    /*
     * 初级 --2星或2星以下
     * 中级  -- 4星 或4星以下
     * 高级 --5星或以上
     *
     * */
    public Integer UpdateLevel(Long userId) {

        UserLevel userLevel =userLevelApi.findByUserId(userId);
        String level = userLevel.getLevel();

        Integer star=null;
        if (level.equals("初级")){
            star=2;
            return star;

        }else if (level.equals("中级")){
            star=4;
            return star;

        }else {
            star=5;
            return star;

        }

    }

    //更新试卷等级
   /* public void UpdateLevel(Long userId) {

        //查询等级为初级的所有试卷
        Criteria criteria = Criteria.where("level").is("初级");
        Query query = Query.query(criteria);
        List<TestSoul> testSouls = mongoTemplate.find(query, TestSoul.class);
        boolean tag=false; //假设初始值为false;
        for (TestSoul testSoul : testSouls) {
            if (testSoul.getIsLock()==0){
                tag=true;
            }
        }

        //加入tag为true ，那就是所有初级题都是解锁状态，将所有中级题解锁
        if (tag){
            Criteria criteria1 = Criteria.where("level").is("中级");
            Query query1 = Query.query(criteria);
            List<TestSoul> testSouls1 = mongoTemplate.find(query1, TestSoul.class);
            for (TestSoul testSoul : testSouls1) {

                Query query2 = Query.query(Criteria.where("id").is(testSoul.getId()));
                Update update1=new Update();
                update1.set("isLock",0);
                mongoTemplate.updateFirst(query2,update1,TestSoul.class);
            }
        }

    }*/

}
